package com.changgou.file.service.Impl;

import com.changgou.file.service.FileService;
import com.changgou.file.util.FastDFSClient;
import com.changgou.file.util.FastDFSFile;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;

import java.io.IOException;

@Service
public class FileServiceImpl implements FileService {

	@Override
	public String upLoadFile(MultipartFile file) {
		//在第7步时，会抛异常，这是因为FastDFSClient中的getTrackerUrl()方法会抛异常，
		//所以要层层上抛
		try {
			//1、获取文件名称
			String originalFilename = file.getOriginalFilename();

			//2、判断用户上传的是否是空文件（通过文件名称判断）
			if(originalFilename==null){
				throw new RuntimeException("您上传的文件不存在");
			}

			//3、获取文件内容
			byte[] bytes = file.getBytes();

			//4、获取文件拓展名，如jpg，但不包含.
			int dot = originalFilename.lastIndexOf(".");
			String extensionName = originalFilename.substring(dot + 1);

			//5、将文件名称、文件内容、文件拓展名封装到FastDFSFile类中
			FastDFSFile fastDFSFile=new FastDFSFile(originalFilename,bytes,extensionName);

			//6、将封装好的FastDFSFile上传（FastDFSClient有静态方法）
			//由于upLoad方法是静态（static），所以可以使用类.方法
			String[] uploadResults = FastDFSClient.upload(fastDFSFile);

			//7、拼接url，制作一个链接地址
			String url=FastDFSClient.getTrackerUrl()+uploadResults[0]+"/"+uploadResults[1];

			//8、返回给控制层
			return url;
		} catch (IOException e) {
			e.printStackTrace();
		}

		return "";
	}
}
